package com.wongoing.util.safe.rsa;

import java.security.PublicKey;

import org.apache.commons.codec.binary.Base64;

public class RSAHelper {

	private static RSAHelper instance;
	
	public synchronized static RSAHelper getInstance() {
		if(instance == null) {
			instance = new RSAHelper();
		}
		return instance;
	}
	
	/**
	 * 功能说明：RSA加密算法
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年6月27日 上午9:15:31
	 * @param source
	 * @return
	 * @throws Exception
	 */
	public String decrypt(String source) throws Exception {
		//定义自己公钥的路径
		String certPath = Thread.currentThread().getContextClassLoader().getResource("").getPath()+"pkcs8_pulbic_key.pem";
		//String certPath = "C:/cert/pkcs8_pulbic_key.pem"; //
		//根据PKCS#8密钥文件获取对应PublicKey
		PublicKey pubkey= RSAUtil.getInstance().getPubKey(certPath,"RSA"); 
		//rsa是微信付款到银行卡要求我们填充的字符串
		String fillMode ="RSA/ECB/OAEPWITHSHA-1ANDMGF1PADDING";
		// 进行加密
		byte[] estr=RSAUtil.getInstance().encrypt(source.getBytes(), pubkey, 2048, 11, fillMode);   //对银行账号进行base加密
		return Base64.encodeBase64String(estr);//并转为base64格式
	}
}
